#ifndef BFS_H
#define BFS_H

#include "graph.h"
#include "queue.h"
#include "matrix.h"
#include <iostream>
#include <sstream>

class BFS
{
    int *dRow;
    int *pRow;
    Graph *graph;

    Queue<Graph_Node> queue;

public:
    std::string output;

    BFS();

    void init(const Graph_Node& start);
    void start();

    void setGraph(const Graph& g);
    const Graph& getGraph() const;

    Matrix<int, int> *parent;
    Matrix<int, int> *distance;
};

#endif // BFS_H
